package com.demo.java.OD551_600.OD558;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【矩阵中非1的元素个数(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146535285
 */
public class OdMain {
    public static int result = 1; // 用于存储可通过的元素个数

    public static void main(String[] args) {
        // 输入数据
        Scanner in = new Scanner(System.in);
        int m = in.nextInt(); // 矩阵的行数
        int n = in.nextInt(); // 矩阵的列数

        // 构建矩阵并输入元素
        int[][] matrix = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j] = in.nextInt();
            }
        }

        // 将起始位置初始化为1，表示起始节点
        matrix[0][0] = 1;

        // 使用队列进行广度优先搜索
        Queue<int[]> queue = new ArrayDeque<>();
        queue.offer(new int[]{0, 0}); // 起始点加入队列
        result = 1; // 初始化结果，起始位置已经被访问

        // BFS遍历
        int[] node = null;
        while (!queue.isEmpty()) {
            node = queue.poll(); // 获取当前节点
            int x = node[0], y = node[1];

            // 向下、向右、向上、向左检查相邻的节点
            if (x + 1 < m && matrix[x + 1][y] == 0) {
                matrix[x + 1][y] = matrix[x][y] + 1; // 标记访问
                result += 1;
                queue.offer(new int[]{x + 1, y}); // 加入队列
            }
            if (y + 1 < n && matrix[x][y + 1] == 0) {
                matrix[x][y + 1] = matrix[x][y] + 1; // 标记访问
                result += 1;
                queue.offer(new int[]{x, y + 1}); // 加入队列
            }
            if (x - 1 >= 0 && matrix[x - 1][y] == 0) {
                matrix[x - 1][y] = matrix[x][y] + 1; // 标记访问
                result += 1;
                queue.offer(new int[]{x - 1, y}); // 加入队列
            }
            if (y - 1 >= 0 && matrix[x][y - 1] == 0) {
                matrix[x][y - 1] = matrix[x][y] + 1; // 标记访问
                result += 1;
                queue.offer(new int[]{x, y - 1}); // 加入队列
            }
        }

        // 输出剩余可通过的元素个数
        System.out.println(m * n - result); // 总元素数减去已访问的元素数
    }
}